home *** CD-ROM | disk | FTP | other *** search
- #include "www.h" // Automatically includes "acgi.h"
-
- #include <Threads.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- // -----------------------------------------------------
-
- // [1] Return the name of your log file.
-
- char *WWWGetLogName(void)
- {
- return "acgi.log";
- }
-
- // [2] Return the four default HTML error pages.
-
- void WWWGetHTMLPages(Handle refused, Handle tooBusy, Handle noMemory, Handle unexpectedError)
- {
- HTMLAppendFile(refused, "acgiRefused.html");
- HTMLAppendFile(tooBusy, "acgiTooBusy.html");
- HTMLAppendFile(noMemory, "acgiNoMemory.html");
- HTMLAppendFile(unexpectedError, "acgiUnexpected.html");
- }
-
- // [3] Initialize your processing environment.
-
- OSErr WWWInit(void)
- {
- return (noErr);
- }
-
- // [4] Tear down your environment prior to quitting.
-
- void WWWQuit(void)
- {
- }
-
- // [5] Do any periodic tasks.
-
- OSErr WWWPeriodicTask(void)
- {
- return (noErr);
- }
-
- // [6] Handle one POST request. Note how we use the YIELD() macro
- // to check if the application is shutting down and terminate
- // processing if so.
-
- #define YIELD() { YieldToAnyThread(); \
- if (ACGIIsShuttingdown()) \
- return (errWWWRefused); }
-
- OSErr WWWProcess(WWWRequest request)
- {
- Handle r = HTMLGetResponseHandle(request);
- char s[1024];
- long len, i, n;
- char name[512];
- char value[512];
- long iName, iValue;
- Boolean gotOne;
- OSErr err;
-
- err = HTMLAppendPString(r, "\p<HTML><HEAD><TITLE>ACGI</TITLE></HEAD>\r\n");
-
- YIELD();
-
- err = HTMLAppendCString(r, "<BODY><H1>ACGI Parameters</H1><TABLE BORDER=0>");
-
- YIELD();
-
- err = HTMLAppendCString(r, "<TR><TD ALIGN=RIGHT NOWRAP><B>Path arguments:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_path_args, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>User name:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_username, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Password:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_password, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>From user:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_from_user, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Client address:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_client_address, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Server name:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_server_name, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Server port:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_server_port, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Script name:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_script_name, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Content type:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_content_type, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Referer:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_referer, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>User agent:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_user_agent, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Action:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_action, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Action path:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_action_path, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Method:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_method, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Client IP:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_client_ip, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP VALIGN=TOP><B>Full request:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_full_request, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP><B>Connection ID:</B></TD><TD>");
-
- YIELD();
-
-
- if (HTTPCopyParam(request, p_connection_id, s, 1023, &len))
- err = HTMLAppendCString(r, s);
-
- YIELD();
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP VALIGN=TOP><B>Search Arguments:</B></TD><TD>");
-
- YIELD();
-
- n = HTTPGetNumSrchArgs(request);
- if (n > 0) {
- for (i = 1; i <= n; i++) {
- gotOne = HTTPGetSrchArgAt(request, i, name, 511, &iName, value, 511, &iValue);
- if (gotOne) {
- if (i > 1) err = HTMLAppendCString(r, "<BR>");
- err = HTMLAppendCString(r, name);
- err = HTMLAppendCString(r, " = ");
- err = HTMLAppendCString(r, value);
- }
- YIELD();
- }
- }
- else
- err = HTMLAppendCString(r, "(none)");
-
- err = HTMLAppendCString(r, "</TD></TR><TR><TD ALIGN=RIGHT NOWRAP VALIGN=TOP><B>Post Arguments:</B></TD><TD>");
-
- YIELD();
-
- n = HTTPGetNumPostArgs(request);
- if (n > 0) {
- for (i = 1; i <= n; i++) {
- gotOne = HTTPGetPostArgAt(request, i, name, 511, &iName, value, 511, &iValue);
- if (gotOne) {
- if (i > 1) err = HTMLAppendCString(r, "<BR>");
- err = HTMLAppendCString(r, name);
- err = HTMLAppendCString(r, " = ");
- err = HTMLAppendCString(r, value);
- }
- YIELD();
- }
- }
- else
- err = HTMLAppendCString(r, "(none)");
-
- YIELD();
-
- err = HTMLAppendCString(r, "</UL></TD></TR></TABLE>\r\n</BODY>\r\n</HTML>\r\n");
-
- return (err);
- }
-